package main

import (
	"fmt"
	"strconv"
)

func main() {
	demo01Int32ToInt64()
	demo02StrInt()
}

/*

例如：将整数类型int64类型转换成int32类型
var a int32
a = 2345
b := int64(a)
*/
func demo01Int32ToInt64() {
	var a int32
	a = 2345
	b := int64(a)
	fmt.Println(b)

	c := 214748363
	fmt.Printf("c的类型：%T \n", c) // c的类型：int
	i := int64(c)
	fmt.Printf("i的类型：%T \n", i) // i的类型：int64

}

/*
字符串和整数的互相转换
可以使用string(a) 将整数a转换成字符串

也可以使用 strconv.Atoi(str) 将字符串转换成整数
	strconv.Itoa(cInt) 将整数转换成字符串

*/

func demo02StrInt() {
	// 方式一：直接强转
	a := 'e'
	str := string(rune(a))
	fmt.Println(str) // e

	// 方式二（推荐）：直接使用内置函数，可以相互转换
	// string to int
	aStr := "100"
	bInt, err := strconv.Atoi(aStr)

	if err == nil {
		fmt.Printf("aStr：%T %s，bInt：%T %d\n", aStr, aStr, bInt, bInt)
	} else {
		fmt.Printf("err：%s\n", err)
	}

	// int to string
	cInt := 200
	dStr := strconv.Itoa(cInt)

	fmt.Printf("cInt：%T %d，dStr：%T %s\n", cInt, cInt, dStr, dStr)
}
